<?php

namespace App\Job\Delay;


use App\Dao\AnchorSortLogDao;
use App\Model\PayCall;
use App\Utils\LoggerUtil;
use Hyperf\AsyncQueue\Job;

class SetAnchorSortDelayQueueJob extends Job
{
    private mixed $params;

    public function __construct($params)
    {
        // 这里最好是普通数据，不要使用携带 IO 的对象，比如 PDO 对象
        $this->params = $params;
    }


    public function handle()
    {
        // TODO: Implement handle() method.
        $body = json_decode($this->params, true);
        LoggerUtil::write("set_anchor_sort_delay_queue_job", $body);
        $param = $body['param'];
        $res = $this->callSetAnchorSort(...$param);
        LoggerUtil::write("set_anchor_sort_delay_queue_job", compact('res'));
    }

    /**
     * 通话设置主播排序分
     * @param $call_id
     * @param int $anchor_online
     * @return bool
     */
    public function callSetAnchorSort($call_id, $anchor_online = 0)
    {
        $payCall = (new \PayCall2Model())->find("*", 'id=? and is_robot=0', [$call_id]);
        PayCall::query()->where('id', $call_id)->where('is_robot', 0)->first();

        if (empty($payCall)) {
            return $call_id;
        }
        // 主播主叫
        if ($payCall['caller'] == 2) {
            // 接通
            if ($payCall['start_time'] > 0) {
                if ($payCall['is_call_mass']) {
                    // 通话 记录主播排序分值
                    AnchorSortLogDao::record($payCall['anchor_id'], 4, 1, '通话id：' . $call_id);
                } else {
                    // 通话 记录主播排序分值
                    AnchorSortLogDao::record($payCall['anchor_id'], 2, 1, '通话id：' . $call_id);
                }
            }
        } else {
            // 主播被叫
            // 接通
            if ($payCall['start_time'] > 0) {
                // 通话接通 记录主播排序分值
                AnchorSortLogDao::record($payCall['anchor_id'], 3, 1, '通话id：' . $call_id);
            } elseif ($anchor_online) {
                if ($payCall['is_call_mass']) {
                    // 速聊通话未接通 记录主播排序分值
                    AnchorSortLogDao::record($payCall['anchor_id'], 16, 1, '通话id：' . $call_id);
                } else {
                    // 通话未接通 记录主播排序分值
                    AnchorSortLogDao::record($payCall['anchor_id'], 15, 1, '通话id：' . $call_id);
                }
            }
        }
        return true;
    }

}